/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package GUI;

import javax.swing.JOptionPane;
import tp1POO.Modelo.Funcionario;

/**
 *
 * @author matheus
 */
public class GuiCreator {
    private GuiPrincipal guiMain = null;
    private GUICliente guiCliente = null;
    private GUIFuncionario guiFuncionario = null;
    private GuiFuncionalidades guiFuncionalidades = null;
    private GUIMotorista guiMotorista = null;
    private GUITipoVeiculo guiTipo = null;
    private GuiLocacao guiLocacao = null;
    private GuiLogin guiLogin = null;
    private GuiPesquisaCliente guiPesqCliente = null;
    private GuiResultPesq guiResultPesq = null;
    private GuiVeiculo guiVeiculo = null;
    private GuiList guiList = null;
    private GUIRemoveCliente guiRemCliente = null;
    private GUIRemoveFuncionario guiRemFuncionario = null;
    private GUIRemoveMotorista guiRemMotorista = null;
    private GuiRemoverVeiculo guiRemVeiculo = null;
    private GuiRemTipo guiRemTipo = null;
    private GuiRemoverLocacao guiRemLoc = null;
    private static GuiCreator guiCreator;

    public static GuiCreator obterInstancia () {
        if (guiCreator == null) {
            guiCreator = new GuiCreator();
        }
        return guiCreator;
    }


    public GuiLocacao getGuiLocacoao () {
        return this.guiLocacao;
    }

    public GuiFuncionalidades getGuiFuncionalidades () {
        return this.guiFuncionalidades;
    }

    public void exibirMensagem (String msg) {
        JOptionPane.showMessageDialog(null,msg, " Notificação", JOptionPane.INFORMATION_MESSAGE);
    }
    



    public boolean existeOutroFrameAberto () {
        if (guiRemLoc!=null||guiCliente!=null||guiFuncionario!=null||guiMotorista!=null||guiTipo!=null||guiLocacao!=null||guiPesqCliente!=null||guiResultPesq!=null||guiVeiculo!=null||guiList!=null||guiRemCliente!=null||guiRemFuncionario!=null||guiRemMotorista!=null||guiRemTipo!=null||guiRemVeiculo!=null) {
            JOptionPane.showMessageDialog(guiFuncionalidades.getComponent(0),"ERRO : Já existe uma funcionalidade em andamento!", "Error", JOptionPane.ERROR_MESSAGE);
            return true;
        }
        else {
            return false;
        }
    }


    public void criarGuiCliente () {
        if (!existeOutroFrameAberto()) {
            guiCliente = new GUICliente();
            guiCliente.setVisible(true);
        }
        return;
    }

    public void criarGuiFuncionario () {
        if (!existeOutroFrameAberto()) {
            guiFuncionario = new GUIFuncionario();
            guiFuncionario.setVisible(true);
        }
        return;
    }

    public void criarGuiFuncionalidades (Funcionario func) {
        if (!existeOutroFrameAberto()) {
            guiFuncionalidades = new GuiFuncionalidades(func);
            guiFuncionalidades.setVisible(true);
        }
        return;
    }

    public void criarGuiMotorista (int acesso) {
        if (acesso != 1) {
            if (!existeOutroFrameAberto()) {
                guiMotorista = new GUIMotorista();
                guiMotorista.setVisible(true);
            }
            return;
        }
        else {
            if (!(guiRemLoc!=null||guiCliente!=null||guiFuncionario!=null||guiMotorista!=null||guiTipo!=null||guiPesqCliente!=null||guiResultPesq!=null||guiVeiculo!=null||guiList!=null||guiRemCliente!=null||guiRemFuncionario!=null||guiRemMotorista!=null||guiRemTipo!=null||guiRemVeiculo!=null)) {
                guiMotorista = new GUIMotorista(acesso);
                guiMotorista.setVisible(true);
            }
        }
    }

    public void criarGuiTipo () {
        if (!existeOutroFrameAberto()) {
            guiTipo = new GUITipoVeiculo();
            guiTipo.setVisible(true);
        }
        return;
    }

    public void criarGuiLocacao () {
        if (!existeOutroFrameAberto()) {
            guiLocacao = new GuiLocacao();
            guiLocacao.setVisible(true);
        }
        return;
    }

    public void criarGuiLogin () {
        if (!existeOutroFrameAberto()) {
            guiLogin = new GuiLogin();
            guiLogin.setVisible(true);
        }
        return;
    }

    public void criarGuiPesqCliente () {
        if (!existeOutroFrameAberto()) {
            guiPesqCliente = new GuiPesquisaCliente();
            guiPesqCliente.setVisible(true);
        }
        return;
    }

    public void criarGuiResultPesq (int pesquisaAtual) {
        if (!existeOutroFrameAberto()) {
            if (pesquisaAtual == -1)
                guiResultPesq = new GuiResultPesq();
            else
                guiResultPesq = new GuiResultPesq(pesquisaAtual);
            guiResultPesq.setVisible(true);
        }
        return;
    }

    public void criarGuiVeiculo () {
        if (!existeOutroFrameAberto()) {
            guiVeiculo = new GuiVeiculo();
            guiVeiculo.setVisible(true);
        }
        return;
    }

    public void criarGuiList () {
        if (!existeOutroFrameAberto()) {
            guiList = new GuiList();
            guiList.setVisible(true);
        }
        return;
    }

    public void criarGuiPrincipal () {
        if (!existeOutroFrameAberto()) {
            guiMain = new GuiPrincipal();
            guiMain.setVisible(true);
        }
        return;
    }

    public void criarGuiRemCliente () {
        if (!existeOutroFrameAberto()) {
            guiRemCliente = new GUIRemoveCliente();
            guiRemCliente.setVisible(true);
        }
        return;
    }

    public void criarGuiRemFuncionario () {
        if (!existeOutroFrameAberto()) {
            guiRemFuncionario = new GUIRemoveFuncionario();
            guiRemFuncionario.setVisible(true);
        }
        return;
    }

    public void criarGuiRemMotorista () {
        if (!existeOutroFrameAberto()) {
            guiRemMotorista = new GUIRemoveMotorista();
            guiRemMotorista.setVisible(true);
        }
        return;
    }

    public void criarGuiRemVeiculo () {
        if (!existeOutroFrameAberto()) {
            guiRemVeiculo = new GuiRemoverVeiculo();
            guiRemVeiculo.setVisible(true);
        }
        return;
    }

    public void criarGuiRemTipo () {
        if (!existeOutroFrameAberto()) {
            guiRemTipo = new GuiRemTipo();
            guiRemTipo.setVisible(true);
        }
        return;
    }

    public void criarGuiRemLoc () {
        if (!existeOutroFrameAberto()) {
            guiRemLoc = new GuiRemoverLocacao();
            guiRemLoc.setVisible(true);
        }
        return;
    }

    public void removerGuiResultPesq () {
        guiResultPesq.dispose();
        guiResultPesq = null;
    }

    public void removerGuiCliente () {
        guiCliente.dispose();
        guiCliente = null;
    }

    public void removerGuiFuncionario () {
        guiFuncionario.dispose();
        guiFuncionario = null;
    }

    public void removerGuiMotorista () {
        guiMotorista.dispose();
        guiMotorista = null;
    }

    public void removerGuiTipo () {
        guiTipo.dispose();
        guiTipo = null;
    }

    public void removerGuiLocacao () {
        guiLocacao.dispose();
        guiLocacao = null;
    }

    public void removerGuiLogin () {
        guiLogin.dispose();
    }

    public void removerGuiPesqCliente () {
        guiPesqCliente.dispose();
        guiPesqCliente = null;
    }

    public void removerGuiVeiculo () {
        guiVeiculo.dispose();
        guiVeiculo = null;
    }

    public void removerGuiList () {
        guiList.dispose();
        guiList = null;
    }

    public void removerGuiPrincipal () {
        guiMain.dispose();
        guiMain = null;
    }

    public void removerGuiFuncionalidades () {
        guiFuncionalidades.dispose();
        guiFuncionalidades = null;
    }

    public void removerGuiRemCliente () {
        guiRemCliente.dispose();
        guiRemCliente = null;
    }

    public void removerGuiRemFuncionario () {
        guiRemFuncionario.dispose();
        guiRemFuncionario = null;
    }

    public void removerGuiRemMotorista () {
        guiRemMotorista.dispose();
        guiRemMotorista = null;
    }

    public void removerGuiRemVeiculo () {
        guiRemVeiculo.dispose();
        guiRemVeiculo = null;
    }

    public void removerGuiRemTipo () {
        guiRemTipo.dispose();
        guiRemTipo = null;
    }

    public void removerGuiRemLoc () {
        guiRemLoc.dispose();
        guiRemLoc = null;
    }

}
